#include <iostream>
using namespace std;

/*
    函数带默认参数
    1.概念：C++允许定义函数的时候，给形参设置默认值
      好处：程序员可以自己决定是否传递新的实参
        如果你传递新的实参--》就使用新的值
        如果你没有传递实参--》就使用默认值
    2.使用的需要注意如下问题
      传递实参的时候，必须从左到右连续传递，中间不可以跳跃
      带默认参数的函数不支持重载
*/

int setattr(float w = 15.0, float h = 5.0)
{
    cout << "w = " << w << " h = " << h << endl;
    return 0;
}

int fun(int n1 = 666, float n2 = 3.14, const char *n3 = "hello", double n4 = 3.1415926)
{
    cout << "n1 = " << n1 << " n2 = " << n2 << " n3 = " << n3 << " n4 = " << n4 << endl;
    return 0;
}

int main()
{
    // 写法1：传递新的实参
    setattr(56.8, 14.9);

    // 写法2：我不传递任何实参
    setattr();

    // 写法3：传递部分实参
    setattr(56.8);

    // 写法4：
    // setattr(.6.8); // 脑洞很大，错误的，违反了传递实参的时候，必须从左到右连续传递，中间不可以跳跃

    fun(1, 2.0, "hello", 3.1415926);
}
